perm filename 11LST.FAI[KL,SYS] blob
sn#260123 filedate 1977-01-31 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE 11LST
C00004 00003 OPDEF PEEK11 [002000,,]
C00008 00004 READ FILE SPECS FROM TTY INTO BLOCK
C00013 00005 SAVPPN: 0 HAS CURRENT DSK PPN
C00015 ENDMK
C⊗;
TITLE 11LST
F←0
A←1
B←2
C←3
D←4
E←5
G←6
T←7
TT←10
I←11
J←12
K←13
L←14
M←15
N←16
P←17
DKIC←←1
DKOC←←2
ELFC←←3
DEFINE CRLF
< OUTCHR [15]
OUTCHR [12]
>
DEFINE GETFIL $ (LE,STR,LH,CH)
<ZZ←←.
IFDIF <STR><><OUTSTR [ASCIZ /$STR$/]>
PUSHJ P,FILSCN ;INPUT FILE SPECS
IFIDN <LE> <L> <LH,,LUP>
IFIDN <LE> <E> <LH,,ENT>
JRST [ CRLF ;ALT TYPED
JRST MAIN]
JRST [ OUTSTR [ASCIZ /??
/] ;GARBAGE TYPED
CLRBFI
JRST ZZ]
INIT CH,0
'DSK '
IBUF
JRST INITL
IFIDN <LE> <L> <LOOKUP CH,LUP
JRST [ PUSHJ P,LUPFL
JRST ZZ]>
IFIDN <LE> <E> <ENTER CH,ENT
JRST [ PUSHJ P,ENTFL
JRST ZZ]>
>
OPDEF PEEK11 [002000,,]
OPDEF POKE11 [003000,,]
GRAB==10
SGNX==4
INTELF==100000
INTCLK==200 ;LEFT HALF
NXTPNT==1000 ;PDP11 ADDRESS OF NXTPNT
GO: RESET
MOVE P,[-20,,PDL-1]
INIT ELFC,17
SIXBIT /ELF/
0
JRST 4,.
MOVEI A,INT
MOVEM A,JOBAPR↑
MOVEI A,INTELF
INTENB A,
MAIN: GETFIL (L,TYPE FILE TO PRINT - ,0,DKIC)
SETZM AHEAD
SETZM DONEF
LOOK: PUSHJ P,LOOKR
MOVE B,[441000,,BUF11]
SETZM BUF11
MOVE D,[BUF11,,BUF11+1]
BLT D,BUF11+BUF11L-1
SETZM PHAS
SETZM HPOS
DONXTL: PUSHJ P,GET
JRST DONE0
CAIN E,26
JRST DONXTL
CAIN E,11
JRST TAB
CAIN E,12
JRST LF
PUSHJ P,PUT
JRST DONXTL
FF: PUSHJ P,PUT
DONXT1: MOVE D,[400003,,400000] ;SET ELF MODE AND ADDRESS
MOVE B,NXTP
LSH B,-1 ;MAKE BUFFER POINTER A WORD ADDRESS
IOR D,B
USETO ELFC,D
OUTPUT ELFC,[-BUF11L,,BUF11-1]
MTAPE ELFC,WTNXTP
JRST 4,.
SKIPN DONEF
JRST LOOK
JRST DONE
DONE0: SETOM DONEF
LFOUT: MOVEI E,12
JRST FF
TAB: LDB A,[POINT 3,HPOS,35]
MOVN A,A
ADDI A,8
MOVEI E,40
PUSHJ P,PUT
SOJG A,.-1
JRST DONXTL
LF: PUSHJ P,GET
JRST DONE0
CAIN E,14
JRST FF1
MOVEM E,AHEAD
JRST LFOUT
FF1: PUSHJ P,PUT
MOVEI E,12
PUSHJ P,PUT
PUSHJ P,PUT
JRST FF
DONE: MOVE A,[BUF11,,BUF11+1]
SETZM BUF11
BLT A,BUF11+BUF11L-1
MOVE A,[BYTE (8) 14,14,0,14]
MOVEM A,BUF11
PUSHJ P,LOOKR
CLKINT 0
MOVE D,[400003,,400000] ;SET ELF MODE AND ADDRESS
MOVE B,NXTP
LSH B,-1 ;MAKE BUFFER POINTER A WORD ADDRESS
IOR D,B
USETO ELFC,D
OUTPUT ELFC,[-BUF11L,,BUF11-1]
MTAPE ELFC,WTNXTP
JRST 4,.
PUSHJ P,LOOKR
OUTSTR [ASCIZ /
ALL DONE
/]
EXIT
LOOKR: MTAPE ELFC,RDNXTP ;READ NXTPNT
JRST 4,.
MOVE B,NXTP
AOJN B,CPOPJ
CLKINT =15*60 ;WAKE UP IN 15 SECONDS
IWAIT
JRST LOOKR
RDNXTP: PEEK11 NXTPNT/2(SGNX)
NXTP: 0
WTNXTP: POKE11 NXTPNT/2
-1
INT: DISMIS
GET: SKIPE E,AHEAD
JRST [SETZM AHEAD ↔ JRST POPJ1]
SOSG IBUF+2
IN DKIC,
CAIA
POPJ P,
ILDB E,IBUF+1
JUMPE E,GET
AOS (P)
POPJ P,
PUT: AOS HPOS
SKIPE PHAS
JRST PUT1
SETOM PHAS
PUSH P,B ;SAVE BYTE POINTER
IBP B
IDPB E,B
POP P,B
POPJ P,
PUT1: SETZM PHAS
IDPB E,B
IBP B
POPJ P,
PATCH: BLOCK 100
;READ FILE SPECS FROM TTY INTO BLOCK
;WORD AFTER CALL IS DEFAULT EXTENSION,,BLK ADDRESS.
;DOESNT SKIP IF ALT MODE TYPED.
;SKIPS ONCE IF SYNTAX ERROR, TWICE IF OK.
FILSCN: MOVE L,@(P)
HLLZM L,1(L) ;SET UP DEFAULT EXTENSION
AOS (P)
MOVE I,SAVPPN
MOVEM I,3(L) ;INITIALIZE TO CURRENT DSK PPN
PUSHJ P,GETSIX ;SYMBOL IN J, SEPARATOR IN I
CAIN I,175 ;ALT MODE
POPJ P,
AOS (P)
MOVEM J,(L)
CAIN I,"."
JRST FILSCX ;GET EXTENSION
CAIN I,"["
JRST FILSCP ;GET PPN
CAIN I,12
POPJ1: AOS (P)
CPOPJ: POPJ P,
FILSCX: PUSHJ P,GETSIX
HLLZM J,1(L)
CAIN I,12
JRST POPJ1
CAIE I,"["
POPJ P,
FILSCP: PUSHJ P,GETSIX
JUMPE J,FILSP3
FILSP1: TLNE J,77 ;RIGHT ADJUST
JRST FILSP2
LSH J,-6
JRST FILSP1
FILSP2: HLLM J,3(L) ;STORE PROJ NUMBER
FILSP3: CAIN I,","
JRST FILSP4 ;GET PROGRAMMER NAME
FILSP8: CAIN I,"]"
JRST FILSP5 ;DONE
CAIN I,12
AOS (P)
POPJ P,
FILSP4: PUSHJ P,GETSIX
JUMPE J,FILSP8
FILSP6: TLNE J,77
JRST FILSP7
LSH J,-6
JRST FILSP6
FILSP7: HLRM J,3(L)
JRST FILSP8
FILSP5: PUSHJ P,GETSIX
CAIN I,12
JRST POPJ1
JRST FILSP5
LUPFL: OUTSTR [ASCIZ /LOOKUP FAILED - /]
MOVEI L,LUP
FILNOU: MOVE I,(L)
PUSHJ P,SIXTYP
OUTCHR ["."]
MOVE I,1(L)
PUSHJ P,SIXTY3
OUTCHR ["["]
MOVE I,3(L)
PUSHJ P,SIXTY3
OUTCHR [","]
MOVS I,3(L)
PUSHJ P,SIXTY3
OUTSTR [ASCIZ /]
/]
POPJ P,
ENTFL: OUTSTR [ASCIZ /ENTER FAILED - /]
MOVEI L,ENT
JRST FILNOU
;GET SIXBIT SYLLABLE IN J WITH SEPARATOR IN I
GETSIX: MOVE K,[440600,,J]
SETZB F,J
GETSX1: INCHWL I
CAIN I,15
JRST GETSX1
CAIL I,"0"
CAILE I,"9"
JRST GETSX2 ;NOT NUM
JRST GETSX3 ;NUMBER
GETSX2: CAIL I,"a"
CAILE I,"z"
JRST GETSX4 ;NOT LOWER CASE
JRST GETSX5 ;LOWER CASE
GETSX4: CAIL I,"A"
CAILE I,"Z"
JRST GETSX6
GETSX3: SUBI I,40
GETSX5: TLNE K,770000
IDPB I,K
JRST GETSX1
GETSX6: CAIN I,"↓"
JRST GETSX7
TRNN F,1
POPJ P,
JRST GETSX5
GETSX7: XORI F,1
JRST GETSX1
;TYPE I IN SIXBIT (6 CHARS WORTH)
SIXTYP: MOVE J,[440600,,I]
SIXTY1: ILDB K,J
ADDI K,40
OUTCHR K
TLNE J,770000
JRST SIXTY1
POPJ P,
;TYPE LEFT 3 CHARS OF I
SIXTY3: MOVE J,[440600,,I]
SIXTY4: ILDB K,J
ADDI K,40
OUTCHR K
TLNE J,500000
JRST SIXTY4
POPJ P,
INITL: OUTSTR [ASCIZ /CAN'T INIT DSK - LOSEY, LOSEY
/]
JRST 4,.
GETNUM: SETZM MINUSF
MOVEI A,0
GETNM1: INCHWL B
CAIN B,"-"
JRST [SETOM MINUSF ↔ JRST GETNM1]
CAIN B,15
JRST GETNM1
CAIN B,12
JRST GETNMX
CAIN B,175
JRST POPJ1
CAIL B,"0"
CAILE B,"7"
POPJ P,
LSH A,3
ADDI A,-"0"(B)
AOJA C,GETNM1
GETNMX: SKIPGE MINUSF
MOVNS A
POPJ2: AOS (P)
JRST POPJ1
OCTTYP: PUSH P,G
MOVEI G,10
JRST DECTY
DECTYP: PUSH P,G
MOVEI G,=10
DECTY: PUSH P,D
PUSH P,E
PUSHJ P,DECTY1
POP P,E
POP P,D
POP P,G
POPJ P,
DECTY1: IDIVI D,(G)
HRLM E,(P)
SKIPE D
PUSHJ P,DECTY1
HLRZ E,(P)
ADDI E,"0"
OUTCHR E
POPJ P,
SAVPPN: 0 ;HAS CURRENT DSK PPN
LUP: BLOCK 4
ENT: BLOCK 4
IBUF: BLOCK 3
MINUSF: 0
PDL: BLOCK 20
AHEAD: 0
PHAS: 0
DONEF: 0
HPOS: 0
BUF11L===132/4
BUF11: BLOCK BUF11L
END GO